package untils

import (
	"crypto/md5"
	"encoding/hex"
	"fmt"
)

// 单层 MD5
func Md5(str string) string {
	data := []byte(str)
	has := md5.Sum(data)
	return fmt.Sprintf("%x", has) //将[]byte转成16进制
}

// 双层 MD5
func DoubleMD5(raw string) string {
	// 第一轮MD5哈希：将原始字符串转换为字节数组并进行MD5计算
	first := md5.Sum([]byte(raw))

	// 第二轮MD5哈希：
	// 1. 将第一轮的结果转换为十六进制字符串表示
	// 2. 将该字符串再次进行MD5计算
	second := md5.Sum([]byte(hex.EncodeToString(first[:])))

	// 将最终结果转换为十六进制字符串并返回
	return hex.EncodeToString(second[:])
}
